package phase01module02.homework;

import java.util.Random;

/**
 * 定义一个长度为[16][16]的整型二维数组并输入或指定所有位置的元素值，
 * 分别实现二维数组中所有行和所有列中所有元素的累加和并打印
 * 再分别实现二维数组中左上角到右下角和右上角到左下角所有元素的累加和并打印
 */
public class Array {

    //1.定义长度为[16][16]的整型二维数组
    private int[][] arr = new int[16][16];

    //2.随机指定所有位置元素值
    public void setArr() {
        Random random = new Random();
        for(int i = 0; i < arr.length; i++){
            for(int j = 0; j <arr[i].length; j++){
                arr[i][j] = random.nextInt(10);
            }
        }
    }

    //3.查看输入指定元素后的二位数组数值
    public void show() {
        for(int i = 0; i < arr.length; i++){
            for(int j = 0; j < arr[i].length; j++){
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }

    //4.所有行中所有行元素累加和，打印
    public void rowSum(){
        for(int i = 0; i < arr.length; i++){
            int sum = 0;
            for(int j = 0; j < arr[i].length; j++){
                sum += arr[i][j];
            }
            System.out.println("第" + (i+1) + "行的元素和" + sum);
        }
    }

    //5.所有列所有列元素累加和，打印
    public void colSum(){
        //建个一维数组存储列的和
        int[] sum = new int[16];
        for(int i = 0; i < arr.length; i++){
            for(int j = 0; j < arr[i].length; j++){
                sum[j] += arr[i][j];
            }
            System.out.println("第" + (i+1) + "列的元素和" + sum[i]);
        }
    }

    //6.二维数组中左上角到右小角所有元素累加和，打印
    public void leftUpDiagonal(){
        int sum = 0;
        for(int i = 0; i < arr.length; i++){
            for(int j = 0; j < arr[i].length; j++){
                if(i >= j){
                    sum += arr[i][j];
                }
            }
        }
        System.out.println("左上角到右下角所有元素累加和为" + sum);
    }

    //7.二维数组中右上角到左小角所有元素累加和，打印
    public void rightUpDiagonal(){
        int sum = 0;
        for(int i = 0; i < arr.length; i++){
            for(int j = 0; j < arr[i].length; j++){
                if(i <= j){
                    sum += arr[i][j];
                }
            }
        }
        System.out.println("右上角到左下角左右元素累加和为" + sum);
    }

}
